package com.keba.lamp.common.constant;

import com.keba.basic.utils.ArgumentAssert;

import java.util.ArrayList;
import java.util.List;

/**
 * 附件表中事先约定的业务类型。
 * <p>
 * 预定方式为：  定义一个系统级别的接口   此接口内包含这个系统内的所有表中需要的附件类型
 * key定时方式为entity_field
 * value定义方式为： 系统简称-entity-field
 *
 * @author zuihou
 * @date 2018/12/11
 */
public final class AppendixType {

    /**
     * 后端代码不需要使用该 业务类型时， 无需使用常量，直接在ALL_TYPES数组中写字符串即可。
     * 命名规则:
     * 业务表名_字段名
     */
    public static final List<String> ALL_TYPES = new ArrayList<>();


    private AppendixType() {
    }

    public static void assertType(String type) {
        ArgumentAssert.contain(ALL_TYPES, type, "附件类型未定义");
    }

    public interface System {
        /**
         * h5 logo
         */
        String DEF__H5__LOGO = "DEF__H5__LOGO";
        /**
         * mp logo
         */
        String DEF__MP__LOGO = "DEF__MP__LOGO";
        /**
         * 默认库 应用logo
         */
        String DEF__APPLICATION__LOGO = "DEF__APPLICATION__LOGO";
        /** 租户logo */
        String DEF__TENANT__LOGO = "DEF__TENANT__LOGO";

        /**
         * 默认库 用户头像
         *
         * @author tangyh
         * @date 2021/8/14 8:47 下午
         * @create [2021/8/14 8:47 下午 ] [tangyh] [初始创建]
         */
        String DEF__USER__AVATAR = "DEF__USER__AVATAR";
    }

    /**
     * 案件管理中有关的的附件类型定义
     *
     * @author chaowu.wang
     */

    public interface Complaint {
        /**
         * 委托手续和身份材料
         */
        String COMPLAINT__IDENTITY__MATERIAL = "COMPLAINT__IDENTITY__MATERIAL";
        /**
         * 起诉状文件
         */
        String COMPLAINT__SUIT__FILE = "COMPLAINT__SUIT__FILE";

        /**
         * 证据目录签名版
         */
        String COMPLAINT__EVIDENCE__SIGN__FILE = "COMPLAINT__EVIDENCE__SIGN__FILE";

        /**
         * 送达地址确认书--签名版
         */
        String COMPLAINT__DELIVERY__ADDRESS__SIGN__FILE = "COMPLAINT__DELIVERY__ADDRESS__SIGN__FILE";
        /**
         * 送达地址确认书
         */
        String COMPLAINT__DELIVERY__ADDRESS__FILE = "COMPLAINT__DELIVERY__ADDRESS__FILE";

        /**
         * 结算确认书--签名版
         */
        String COMPLAINT__SETTLE_CONFIRM__SIGN__FILE = "COMPLAINT__SETTLE_CONFIRM__SIGN__FILE";
        /**
         * 结算确认书
         */
        String COMPLAINT__SETTLE_CONFIRM__FILE = "COMPLAINT__SETTLE_CONFIRM__FILE";

        /**
         * 其他文件
         */
        String COMPLAINT__OTHER__FILE = "COMPLAINT__OTHER__FILE";

        /**
         * office文件
         */
        String COMPLAINT__OFFICE__FILE = "COMPLAINT__OFFICE__FILE";

        /**
         * 账户证据图片
         */
        String ACCOUNT__EVIDENCE__IMAGE = "ACCOUNT__EVIDENCE__IMAGE";

        /**
         * 渠道客户图片
         */
        String COMPLAINT__CHANNEL__CUSTOMER__IMAGE = "COMPLAINT__CHANNEL__CUSTOMER__IMAGE";

        /** 证据组件示例图片 */
        String COMPLAINT__EVIDENCE__SAMPLE__FILE = "COMPLAINT__EVIDENCE__SAMPLE__FILE";

        /** 证据文件 */
        String COMPLAINT__EVIDENCE__FILE = "COMPLAINT__EVIDENCE__FILE";

        /** 案件说明文件 */
        String COMPLAINT__CASE__REMARK__FILE = "COMPLAINT__CASE__REMARK__FILE";

        /** 被告信息文件 */
        String COMPLAINT__DEFENDANT__FILE = "COMPLAINT__DEFENDANT__FILE";

        /** 原告代理人信息文件 */
        String COMPLAINT__PLAINTFF__AGENT__FILE = "COMPLAINT__PLAINTFF__AGENT__FILE";
        /** 被告代理人信息文件 */
        String COMPLAINT__DEFENDANT__AGENT__FILE = "COMPLAINT__DEFENDANT__AGENT__FILE";

        /** 原告信息文件 */
        String COMPLAINT__PLAINTFF__FILE = "COMPLAINT__PLAINTFF__FILE";

        /** 案件压缩包 */
        String COMPLAINT__CASE__ZIP__FILE = "COMPLAINT__CASE__ZIP__FILE";
    }

    public interface Download {
        /**
         * 下载代理文件
         */
        String DOWNLOAD__IDENTITY__MATERIAL = "DOWNLOAD__IDENTITY__MATERIAL";
        /**
         * 送达地址确认书
         */
        String DOWNLOAD__DELIVERY__ADDRESS__FILE = "DOWNLOAD__DELIVERY__ADDRESS__FILE";

        /**
         * 结算确认书
         */
        String DOWNLOAD__SETTLE_CONFIRM__FILE = "DOWNLOAD__SETTLE_CONFIRM__FILE";
        /**
         * 下载起诉状
         */
        String DOWNLOAD__CASE__PDF__FILE = "DOWNLOAD__CASE__PDF__FILE";
        /**
         * 下载案件压缩包
         */
        String DOWNLOAD__CASE__ZIP__FILE = "DOWNLOAD__CASE__ZIP__FILE";
    }

    /**
     * 文件 业务类型定义
     */
    interface File {
        /**
         * 基础库 文件中心
         *
         * @author tangyh
         * @date 2021/8/14 8:45 下午
         * @create [2021/8/14 8:45 下午 ] [tangyh] [初始创建]
         */
        String BASE__FILE = "BASE__FILE";
    }


    /**
     * 消息系统 业务类型定义
     */
    interface Msg {
        /**
         * 扩展库 消息内容附件
         *
         * @author tangyh
         * @date 2021/8/14 8:47 下午
         * @create [2021/8/14 8:47 下午 ] [tangyh] [初始创建]
         */
        String EXTEND__MSG__CONTENT = "EXTEND__MSG__CONTENT";
    }


}
